home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / linux / if_hippi.h < prev    next >
C/C++ Source or Header  |  2009-10-16  |  4KB  |  159 lines

  1. /*
  2.  * INET        An implementation of the TCP/IP protocol suite for the LINUX
  3.  *        operating system.  INET is implemented using the  BSD Socket
  4.  *        interface as the means of communication with the user level.
  5.  *
  6.  *        Global definitions for the HIPPI interface.
  7.  *
  8.  * Version:    @(#)if_hippi.h    1.0.0    05/26/97
  9.  *
  10.  * Author:    Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
  11.  *        Donald Becker, <becker@super.org>
  12.  *        Alan Cox, <alan@lxorguk.ukuu.org.uk>
  13.  *        Steve Whitehouse, <gw7rrm@eeshack3.swan.ac.uk>
  14.  *        Jes Sorensen, <Jes.Sorensen@cern.ch>
  15.  *
  16.  *        This program is free software; you can redistribute it and/or
  17.  *        modify it under the terms of the GNU General Public License
  18.  *        as published by the Free Software Foundation; either version
  19.  *        2 of the License, or (at your option) any later version.
  20.  */
  21.  
  22. #ifndef _LINUX_IF_HIPPI_H
  23. #define _LINUX_IF_HIPPI_H
  24.  
  25. #include <linux/types.h>
  26. #include <asm/byteorder.h>
  27.  
  28. /*
  29.  *    HIPPI magic constants.
  30.  */
  31.  
  32. #define HIPPI_ALEN    6        /* Bytes in one HIPPI hw-addr       */
  33. #define HIPPI_HLEN    sizeof(struct hippi_hdr)
  34. #define HIPPI_ZLEN    0        /* Min. bytes in frame without FCS */
  35. #define HIPPI_DATA_LEN    65280        /* Max. bytes in payload       */
  36. #define HIPPI_FRAME_LEN    (HIPPI_DATA_LEN + HIPPI_HLEN)
  37.                     /* Max. bytes in frame without FCS */
  38.  
  39. /*
  40.  * Define LLC and SNAP constants.
  41.  */
  42. #define HIPPI_EXTENDED_SAP    0xAA
  43. #define HIPPI_UI_CMD        0x03
  44.  
  45.  
  46. /*
  47.  *    Do we need to list some sort of ID's here?
  48.  */
  49.  
  50. /*
  51.  *    HIPPI statistics collection data. 
  52.  */
  53.  
  54. struct hipnet_statistics
  55. {
  56.     int    rx_packets;        /* total packets received    */
  57.     int    tx_packets;        /* total packets transmitted    */
  58.     int    rx_errors;        /* bad packets received        */
  59.     int    tx_errors;        /* packet transmit problems    */
  60.     int    rx_dropped;        /* no space in linux buffers    */
  61.     int    tx_dropped;        /* no space available in linux    */
  62.  
  63.     /* detailed rx_errors: */
  64.     int    rx_length_errors;
  65.     int    rx_over_errors;        /* receiver ring buff overflow    */
  66.     int    rx_crc_errors;        /* recved pkt with crc error    */
  67.     int    rx_frame_errors;    /* recv'd frame alignment error */
  68.     int    rx_fifo_errors;        /* recv'r fifo overrun        */
  69.     int    rx_missed_errors;    /* receiver missed packet    */
  70.  
  71.     /* detailed tx_errors */
  72.     int    tx_aborted_errors;
  73.     int    tx_carrier_errors;
  74.     int    tx_fifo_errors;
  75.     int    tx_heartbeat_errors;
  76.     int    tx_window_errors;
  77. };
  78.  
  79.  
  80. struct hippi_fp_hdr
  81. {
  82. #if 0
  83.     __u8        ulp;                /* must contain 4 */
  84. #if defined (__BIG_ENDIAN_BITFIELD)
  85.     __u8        d1_data_present:1;        /* must be 1 */
  86.     __u8        start_d2_burst_boundary:1;    /* must be zero */
  87.     __u8        reserved:6;            /* must be zero */
  88. #if 0
  89.     __u16        reserved1:5;
  90.     __u16        d1_area_size:8;            /* must be 3 */
  91.     __u16        d2_offset:3;            /* must be zero */
  92. #endif
  93. #elif defined(__LITTLE_ENDIAN_BITFIELD)
  94.     __u8        reserved:6;            /* must be zero */
  95.     __u8         start_d2_burst_boundary:1;    /* must be zero */
  96.     __u8        d1_data_present:1;        /* must be 1 */
  97. #if 0
  98.     __u16        d2_offset:3;            /* must be zero */
  99.     __u16        d1_area_size:8;            /* must be 3 */
  100.     __u16        reserved1:5;            /* must be zero */
  101. #endif
  102. #else
  103. #error    "Please fix <asm/byteorder.h>"
  104. #endif
  105. #else
  106.     __be32        fixed;
  107. #endif
  108.     __be32        d2_size;
  109. } __attribute__ ((packed));
  110.  
  111. struct hippi_le_hdr
  112. {
  113. #if defined (__BIG_ENDIAN_BITFIELD)
  114.     __u8        fc:3;
  115.     __u8        double_wide:1;
  116.     __u8        message_type:4;
  117. #elif defined(__LITTLE_ENDIAN_BITFIELD)
  118.     __u8        message_type:4;
  119.     __u8        double_wide:1;
  120.     __u8        fc:3;
  121. #endif
  122.     __u8        dest_switch_addr[3];
  123. #if defined (__BIG_ENDIAN_BITFIELD)
  124.     __u8        dest_addr_type:4,
  125.             src_addr_type:4;
  126. #elif defined(__LITTLE_ENDIAN_BITFIELD)
  127.     __u8        src_addr_type:4,
  128.             dest_addr_type:4;
  129. #endif
  130.     __u8        src_switch_addr[3];
  131.     __u16        reserved;
  132.     __u8        daddr[HIPPI_ALEN];
  133.     __u16        locally_administered;
  134.     __u8        saddr[HIPPI_ALEN];
  135. } __attribute__ ((packed));
  136.  
  137. #define HIPPI_OUI_LEN    3
  138. /*
  139.  * Looks like the dsap and ssap fields have been swapped by mistake in
  140.  * RFC 2067 "IP over HIPPI".
  141.  */
  142. struct hippi_snap_hdr
  143. {
  144.     __u8    dsap;            /* always 0xAA */
  145.     __u8    ssap;            /* always 0xAA */
  146.     __u8    ctrl;            /* always 0x03 */
  147.     __u8    oui[HIPPI_OUI_LEN];    /* organizational universal id (zero)*/
  148.     __be16    ethertype;        /* packet type ID field */
  149. } __attribute__ ((packed));
  150.  
  151. struct hippi_hdr
  152. {
  153.     struct hippi_fp_hdr    fp;
  154.     struct hippi_le_hdr    le;
  155.     struct hippi_snap_hdr    snap;
  156. } __attribute__ ((packed));
  157.  
  158. #endif    /* _LINUX_IF_HIPPI_H */
  159.